package jzOffer;

public class Num16 {
    //快速幂法
    public double myPow(double x, int n) {
        if(x==0) return 0;
        long N=n;//放入long中是防止整型的-n会溢出
        double res=1.0;
        if(N<0){
            x=1/x;
            N=-N;
        }
        while(N!=0){
            if((N&1)==1) res*=x;  //可以用二分法或二进制法的思想来理解
            x=x*x;     //底数不断平方
            N>>=1;     //指数不断/2，直到指数为0
        }
        return res;
    }

}
